<?php

# -- DÉBUT NOTE DE LICENCE -------------------------------------
#
# Ce fichier fait partie de Clicpage.
#
# Copyright (c) 2010 Francois (www.clicpage.net)
# Distribué selon les termes de la licence GPL version 2.0.
# Consultez le fichier LICENCE ou
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# Ce fichier est inspiré de Dotclear 2
# Copyright (c) 2003-2010 Olivier Meunier & Association Dotclear
# Dotclear 2 est distribué selon les termes de la licence GPL
# version 2.0.
#
# -- FIN NOTE DE LICENCE ---------------------------------------

class antispamLinksLookup extends cpAntispam
{
	
	private $server = 'multi.surbl.org';
	
	public function estIndesirable($auteur, $email, $ip, $titre, $contenu, $page_id, &$details)
	{
		
		$urls = $this->getLinks($contenu);
		
		foreach ($urls as $u)
		{
			$b = parse_url($u);
			if (!isset($b['host']) || !$b['host']) {
				continue;
			}
			
			$domain = preg_replace('/^(.*\.)([^.]+\.[^.]+)$/','$2',$b['host']);
			$host = $domain.'.'.$this->server;
			
			if (gethostbyname($host) != $host) {
				$details = substr($domain,0,128);
				return true;
			}
		}
		
		return;

	}
	
	
	private function getLinks($text)
	{
		$res = array();
		
		# href attribute on "a" tags
		if (preg_match_all('/<a ([^>]+)>/ms', $text, $match, PREG_SET_ORDER))
		{
			for ($i = 0; $i<count($match); $i++)
			{
				if (preg_match('/href="(http:\/\/[^"]+)"/ms', $match[$i][1], $matches)) {
					$res[] = $matches[1];
				}
			}
		}
		
		return $res;
	}
	
	
	public static function installer($core)
	{		
		$core->site->setStatutAntispam('LinksLookup', true);
	}
	
}

?>